모의해킹
호스트기반모의해킹_13_웹 취약점 진단(LFI&CI)
작성자 : Heehyeon Yoo|2025-11-25
# 모의해킹# Web# LFI# CI# Burp Suite
1. 개요
웹 애플리케이션에서 가장 위험한 취약점 유형은 입력값 검증 부재(Lack of Input Validation)이다. 사용자가 전달한 데이터를 서버가 의심 없이 신뢰할 때 발생한다.
2. 로컬 파일 인클루션(Local File Inclusion, LFI)
2.1 개념
서버의 페이지 포함(Include) 기능을 악용하여, 공격자가 원하는 서버 내부 파일(/etc/passwd 등)을 읽어오는 취약점.
- 원리:
include($page)와 같은 함수에서$page파라미터에 대한 경로 통제가 없을 때 발생.
2.2 진단 및 공격 기법
- 경로 탐색(Path Traversal):
- 상위 디렉토리로 이동하는
../문자를 사용한다. - Payload:
page=../../../../etc/passwd
- 상위 디렉토리로 이동하는
- 널 바이트(Null Byte) 우회:
- 일부 구형 PHP에서는 뒤에 붙는 확장자(
.php)를 무시하기 위해%00을 사용하기도 한다.(최신 버전은 패치됨)
- 일부 구형 PHP에서는 뒤에 붙는 확장자(
2.3 자동화 도구
- lfimap: LFI 취약점 스캔에 특화된 파이썬 도구.
python3 lfimap.py -u "http://target/vulnerable.php?page=FUZZ" -a- 특징: 다양한 래퍼(Wrapper)와 필터 우회 기법을 자동으로 시도한다.
3. 커맨드 인젝션(Command Injection)
3.1 개념
웹 애플리케이션이 시스템 함수(system(), exec())를 통해 운영체제 명령어를 실행할 때, 공격자의 악성 명령어를 함께 실행시키는 취약점.
- 예시: 관리자 페이지의 "Ping Test" 기능.
3.2 쉘 메타 문자(Shell Meta Characters)
리눅스/윈도우 쉘에서 명령어를 구분하거나 연계하는 특수 문자.
;(세미콜론): 앞 명령어가 끝나면 뒤 명령어 실행.(ping 127.0.0.1; cat /etc/passwd)&&(AND): 앞 명령어가 성공하면 뒤 명령어 실행.|(Pipe): 앞 명령어의 출력을 뒤 명령어의 입력으로 전달.$()또는`(Backtick): 명령어 실행 결과를 문자열로 치환.
3.3 주의사항: URL 인코딩
HTTP 프로토콜에서 &, ; 같은 문자는 파라미터 구분자 등 특수한 의미를 가진다.
- 필수: 메타 문자를 페이로드로 보낼 때는 반드시 URL Encoding을 적용해야 한다.
&->%26- Burp Suite 단축키:
Ctrl + U
3.4 진단 기법
- 수동 진단: Repeater를 사용하여 메타 문자와
id,whoami명령어를 조합해 응답값을 확인한다. - Intruder 활용: 다양한 메타 문자와 난독화 기법이 포함된 사전(Polyglot Payload)을
Intruder로 브루트 포싱하여, 응답 길이(Length)나 시간 차이(Time-based)로 성공 여부를 판단한다.
4. 실무에서는?
- LFI는 RCE의 전조: 단순히 파일을 읽는 것을 넘어,
Log Poisoning이나PHP Wrapper를 이용하면 원격 코드 실행(RCE)으로 발전할 수 있다. - Command Injection의 파급력: 서버의 쉘 권한을 탈취하는 것이므로, 발견 즉시 Critical(치명적) 등급으로 분류된다.
- Blacklist 필터링의 한계: 공백을 막으면
${IFS}를 쓰고,cat을 막으면more를 쓴다. 블랙리스트보다는 안전한 API 사용이 근본적인 해결책이다.